ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
↳ QTRS
↳ Overlay + Local Confluence
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
LENGTH(cons(x, y)) → LENGTH(y)
HELP(c, l, cons(x, y), z) → GE(c, l)
REV(x) → LENGTH(x)
REV(x) → IF(x, eq(0, length(x)), nil, 0, length(x))
HELP(c, l, cons(x, y), z) → APPEND(y, cons(x, nil))
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
GE(s(x), s(y)) → GE(x, y)
APPEND(cons(x, y), z) → APPEND(y, z)
HELP(c, l, cons(x, y), z) → IF(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
LENGTH(cons(x, y)) → LENGTH(y)
HELP(c, l, cons(x, y), z) → GE(c, l)
REV(x) → LENGTH(x)
REV(x) → IF(x, eq(0, length(x)), nil, 0, length(x))
HELP(c, l, cons(x, y), z) → APPEND(y, cons(x, nil))
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
GE(s(x), s(y)) → GE(x, y)
APPEND(cons(x, y), z) → APPEND(y, z)
HELP(c, l, cons(x, y), z) → IF(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
LENGTH(cons(x, y)) → LENGTH(y)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
LENGTH(cons(x, y)) → LENGTH(y)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
LENGTH(cons(x, y)) → LENGTH(y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
APPEND(cons(x, y), z) → APPEND(y, z)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
APPEND(cons(x, y), z) → APPEND(y, z)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
APPEND(cons(x, y), z) → APPEND(y, z)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
GE(s(x), s(y)) → GE(x, y)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
GE(s(x), s(y)) → GE(x, y)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
GE(s(x), s(y)) → GE(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
HELP(c, l, cons(x, y), z) → IF(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
HELP(c, l, cons(x, y), z) → IF(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
length(nil)
length(cons(x0, x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
HELP(c, l, cons(x, y), z) → IF(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
append(nil, x0)
append(cons(x0, x1), x2)
(1) (IF(append(x7, cons(x6, nil)), ge(x4, x5), cons(x6, x8), x4, x5)=IF(x9, false, x10, x11, x12) ⇒ IF(x9, false, x10, x11, x12)≥HELP(s(x11), x12, x9, x10))
(2) (cons(x6, nil)=x27∧append(x7, x27)=x9∧ge(x4, x5)=false ⇒ IF(x9, false, cons(x6, x8), x4, x5)≥HELP(s(x4), x5, x9, cons(x6, x8)))
(3) (false=false∧cons(x6, nil)=x27∧append(x7, x27)=x9 ⇒ IF(x9, false, cons(x6, x8), 0, s(x29))≥HELP(s(0), s(x29), x9, cons(x6, x8)))
(4) (ge(x30, x31)=false∧cons(x6, nil)=x27∧append(x7, x27)=x9∧(∀x32,x33,x34,x35,x36:ge(x30, x31)=false∧cons(x32, nil)=x33∧append(x34, x33)=x35 ⇒ IF(x35, false, cons(x32, x36), x30, x31)≥HELP(s(x30), x31, x35, cons(x32, x36))) ⇒ IF(x9, false, cons(x6, x8), s(x30), s(x31))≥HELP(s(s(x30)), s(x31), x9, cons(x6, x8)))
(5) (IF(x9, false, cons(x6, x8), 0, s(x29))≥HELP(s(0), s(x29), x9, cons(x6, x8)))
(6) (IF(x9, false, cons(x6, x8), x30, x31)≥HELP(s(x30), x31, x9, cons(x6, x8)) ⇒ IF(x9, false, cons(x6, x8), s(x30), s(x31))≥HELP(s(s(x30)), s(x31), x9, cons(x6, x8)))
(7) (HELP(s(x15), x16, x13, x14)=HELP(x17, x18, cons(x19, x20), x21) ⇒ HELP(x17, x18, cons(x19, x20), x21)≥IF(append(x20, cons(x19, nil)), ge(x17, x18), cons(x19, x21), x17, x18))
(8) (HELP(s(x15), x16, cons(x19, x20), x14)≥IF(append(x20, cons(x19, nil)), ge(s(x15), x16), cons(x19, x14), s(x15), x16))
POL(0) = 0
POL(HELP(x1, x2, x3, x4)) = -1 - x1 + x2 - x3 + x4
POL(IF(x1, x2, x3, x4, x5)) = -1 + x1 - x2 - x3 - x4 + x5
POL(append(x1, x2)) = x2
POL(c) = -2
POL(cons(x1, x2)) = 0
POL(false) = 0
POL(ge(x1, x2)) = 0
POL(nil) = 0
POL(s(x1)) = 1 + x1
POL(true) = 1
The following pairs are in Pbound:
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
The following rules are usable:
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
false → ge(0, s(y))
true → ge(x, 0)
append(cons(x, y), z) → cons(x, append(y, z))
append(nil, y) → y
ge(x, y) → ge(s(x), s(y))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
HELP(c, l, cons(x, y), z) → IF(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
append(nil, x0)
append(cons(x0, x1), x2)